PLC通過自由通訊口方式與變頻器通訊
2007/12/13 10:04:00
摘要:本文主要介紹了使用西門子公司的S7-200 系列PLC的自由口模式與DANFOSS變頻器進行通訊的實現(xiàn)方法,并給出了部分例子程序。
關健字:DANFOSS FC協(xié)議 RS-485 PLC 變頻器
前言
在傳統(tǒng)的變頻控制系統(tǒng)中,變頻器的啟動/停止由PLC通過開關量輸出控制,變頻器頻率是由PLC通過模擬量輸出端口輸出0~5(10)V或4~20mA信號控制的,這需要購買PLC比較昂貴的模擬量輸出端口模塊。變頻器出現(xiàn)故障時由PLC讀取變頻器的故障報警觸點,對具體故障原因并不清楚,需操作人員查詢變頻器報警信息后再閱讀變頻器說明書才知道,這在沒有專業(yè)人員的情況下,對于一個普通的值班人員來說有一定的的難度。隨著交流變頻控制系統(tǒng)及通訊技術的發(fā)展,作者想到可以利用PLC及變頻器的串行通訊的方式來實現(xiàn)PLC對變頻器的控制。這樣既節(jié)省了投資,又減少了設計、安裝和維護的工作量。
一、變頻器的選型
DANFOSS VLT系列變頻調(diào)速器對串行通訊技術的支持是世界所公認的。它所支持的串行通訊技術包括標準RS-485 ,及包括PROFIDRIVE 、LONWORKS在內(nèi)的各種現(xiàn)場總線方式。其中,RS-485通訊方式為用戶提供了無需附加任何費用的、最為廉價實用的串行通訊方式。我們只需按照DANFOSS VLT變頻器規(guī)定的通訊數(shù)據(jù)結(jié)構、控制字和狀態(tài)字格式發(fā)送數(shù)據(jù)即可實現(xiàn)與VLT變頻的通訊。VLT為用戶提供了兩種控制字和狀態(tài)字格式標準:即DANFOSS標準的DANFOSS FC協(xié)議和PROFIBUS標準的PROFIDRIVE協(xié)議。其中FC協(xié)議為用戶提供了更多的與VLT有關的控制信息和狀態(tài)信息。在本例中我們選用DANFOSS FC協(xié)議。
二、PLC的選型
西門子工控產(chǎn)品在工控領域應用市場中有較高的占有率,S7-200系列PLC是西門子SIMATIC PLC家族中的成員之一,在西門子工控領域應用中占有重要地位。S7-200系列PLC體積小,軟硬件功能強大,系統(tǒng)配置方便,由它組成的系統(tǒng)可以與許多種的現(xiàn)場總線相連接。它一推向市場就在各行各業(yè)得到了廣泛應用。自由通訊口方式是S7-200 PLC的一個很有特色的功能,它使S7-200 PLC可以由用戶自己定義通訊協(xié)議。利于自由通訊口方式,在本系統(tǒng)中PLC可以與變頻器和方便連接。PLC通過自由通訊口方式與變頻器通訊,控制變頻器的運行,讀取變頻器自身的電壓、電流、功率、頻率和過壓、過流、過負荷等全部報警信息等參數(shù),這比通過外部端口控制變頻器的運行具有較高的可靠性,節(jié)省了PLC寶貴的I/O端口,又獲的了大量變頻器的信息。在本例中,作者將按照DANFOSS FC協(xié)議來對S7-200的自由口進行編程。
三、VLT串行通訊簡介
VLT變頻器的串行通訊為異步半雙工的方式,使用字節(jié)奇偶校驗和塊傳送異或校驗方法。每個變頻器都配備有一個標準的RS-485通訊端口,使協(xié)議可以通過RS-485電氣接口來進行傳輸。PLC為主機,變頻器為從機,系統(tǒng)電碼的傳輸由主機控制,主機不斷發(fā)出某個地址的電碼給從機,等待從機的響應。主機最多能帶31個從機,在有中繼器的情況下,可以增加到126個從機,也就是從機的地址最多可以設定到126。通訊時,每一個字節(jié)從一個起始位開始實行傳送,然后再傳遞8個數(shù)據(jù)位,相應地組成一個字節(jié),每個字節(jié)由一個奇偶校驗位來驗證傳送的正確性,然后由一個終止位結(jié)束。這樣一個字節(jié)共由11個位組成。
四、電碼結(jié)構
每個電碼由一個起始字節(jié)(STX)開始,這個起始字節(jié)為STX=02H。隨后緊跟一個表示電碼長度(LGE)的字節(jié)和表示變頻器地址的字節(jié)(ADR)。然后是一些數(shù)據(jù)字節(jié)(隨電碼類型而變)。整個電碼由一個數(shù)據(jù)控制字節(jié)(BCC)來結(jié)束。結(jié)構如下:
STX LGE ADR PKE IND PWE H PWE L PCD1 PCD2 BCC
02 0E 04 00 00 00 00 00 00 00 00 00 00 00 00 XX
在上述數(shù)據(jù)結(jié)構中:
1、 PKE占用兩個字節(jié),包括參數(shù)命令類型和參數(shù)數(shù)目;
2、 IND為索引,也占用兩個字節(jié),它與參數(shù)數(shù)目一起使用用于讀寫有索引的參數(shù),此參數(shù)即為設置變頻器的參數(shù)。索引字節(jié)用于表明它是一個讀命令還是寫命令。在讀命令中必須具有0400H的格式,在寫命令中必須具有0500H的格式。
3、 PWE為參數(shù)值塊。占用四個字節(jié),分為高字(PWE H)和低字(PWE L)。比如主機要改變當前的變頻器參數(shù),新的參數(shù)就應寫在參數(shù)PWE中發(fā)送給變頻器。
4、 PCD為過程塊,占用4個字節(jié)。它有兩種狀態(tài),當主機發(fā)給從機時,PCD1為控制字,PCD2為參考值;當從機發(fā)給主機時,PCD1為狀態(tài)字,PCD2為當前的輸出頻率。
5、 BCC為數(shù)據(jù)控制字節(jié)。由它來對接收到的命令進行檢驗正確與否。它的初始值為0,然后對該字節(jié)以前的所有字節(jié)進行異或。
五、PLC編程示例
PLC與變頻器之間采用主從方式進行通訊,PLC為主機,變頻器為從機。1個網(wǎng)絡中只有一臺主機,主機通過站號區(qū)分不同的從機。它們采用半雙工雙向通訊,從機只有在收到主機的讀寫命令后才發(fā)送數(shù)據(jù)。 PLC控制軟件編程上采用模塊式結(jié)構,各種功能的程序模塊通過主程序有機地結(jié)合起來,使系統(tǒng)運行穩(wěn)定可靠。
1、PLC在第一次掃描時執(zhí)行初始化子程序,對端口及RCV指令進行初始化。為了增加程序的可靠性,在初始化完成后,如果檢測到端口空閑時則運行RCV指令使端口處于接受狀態(tài)。初始化子程序如下:
Network 1 // 網(wǎng)絡標題 檢測端口空閑可編在主程序中
// 設定端口屬性
LD SM0.0
MOVB 73, SMB30
Network 2
// 接收信息狀態(tài)
LD SM0.0
MOVB 102, SMB87
Network 3
LD SM0.0
MOVB 16#02, SMB88
MOVB 50, SMB92
MOVB 50, SMB94
R SM87.2, 1
Network 4
LD SM0.0
ATCH INT1, 23 //連接口0接收完成的中斷
Network 5
LD SM0.0
ATCH INT0, 9 //連接口0發(fā)送完成的中斷
Network 6
LD SM0.0
ENI //中斷允許
Network 7
LD SM0.0
MOVD &VB250, VD220 //裝入地址指針
MOVB 0, VB242 //BCC碼寄存器清零
MOVD &VB300, VD224 //裝入地址指針
MOVB 0, VB246 //BCC碼寄存器清零
2、當要改變當前變頻狀態(tài)的信息需傳送時,調(diào)用“控制子程序”。首先它要禁止端口的接收,然后對控制電碼進行編輯和BCC檢驗碼計算,并發(fā)送;當沒有改變當前變頻狀態(tài)的信息需傳送時,調(diào)用“空命令”子程序。因為PLC如果要讀取變頻器的當前工作狀態(tài),就要給變頻器發(fā)送命令,而“控制子程序”代碼繁瑣,執(zhí)行效率不高,我們可以將“空命令”程序需傳送的電碼預先編排好(可以用短電碼),在不需要改變變頻器的時候調(diào)用此程序,這樣可以大大提高執(zhí)行效率。“控制子程序”程序代碼如下:
Network 1
LD SM0.0 //停止端口0的接收
R SM87.7, 1
RCV VB300, 0
Network 2
LD L0.0
MOVW 16#047C, VW211
MOVW LW1, VW213
Network 3
LD L0.1
MOVW 16#0434, VW211
MOVW 0, VW213
Network 4
LD SM0.0
MOVW LW1, VW213
Network 5 // 網(wǎng)絡標題
// 網(wǎng)絡注釋
LD SM0.0
MOVB 16#02, VB200
MOVB 16#0E, VB201
MOVB LB3, VB202
MOVD 0, VD203
MOVD 0, VD207
HTA VB200, VB250, 15
Network 6
LD SM0.0 //計算BCC校驗碼
FOR VW240, +1, +15
Network 7
LD SM0.0
XORB *VD220, VB242
Network 8
LD SM0.0
INCD VD220
Network 9
NEXT
Network 10
LD SM0.0
HTA VB242, VB265, 1 //BCC校驗碼寫入發(fā)送緩沖區(qū)
Network 11
LDB= VB251, 16#0E //發(fā)送緩沖區(qū)準備好后進行發(fā)送
S S0.1, 1
Network 12
LSCR S0.1
Network 13
LD SM4.5
XMT VB250, 0
Network 14
SCRE
3、發(fā)送完成后執(zhí)行發(fā)送完成中斷程序,它的操作包括:允許RCV;bcc碼寄存器清零;重新裝入用于計算BCC校驗碼的地址指針;接收緩沖區(qū)中存放指令結(jié)束字符的字節(jié)清零,用來判斷下一條指令格式是否正確。 4、接收完成后執(zhí)行接收完成中斷程序,它會將接收緩沖區(qū)中的十六進制ASCII碼還原成數(shù)據(jù)并保存。然后調(diào)用“接收處理”子程序。它主要是求出接收緩沖區(qū)中指令的BCC校驗碼并與指令中的BCC校驗碼進行比對,并對電碼中的數(shù)據(jù)進行處理。例如:電碼中過程塊的PCD1表示變頻器的狀態(tài),PCD2表示變頻器當前的輸出頻率。
總結(jié):
使用此方法采用西門子PLC通過自由口使用 DANFOSS FC協(xié)議對DANFOSS變頻器進行控制,極大地減少了線路連接的復雜性,避免了現(xiàn)場可能的各種電磁干擾對控制設備的影響。
參考文獻:
1、西門子公司 SIMATIC S7-200系統(tǒng)手冊 2002.10
2 、DANFOSS公司 VLT 2800操作說明
馮敬璞 男 1980年 畢業(yè)于山西工業(yè)職業(yè)技術學院 現(xiàn)從事自動控制方面的工作
河北省邯鄲市和平路388號北院三樓
邯鄲市工業(yè)自動化研究所 056000
電話:0310-3099710
郵箱:hdfjp@163.com
關健字:DANFOSS FC協(xié)議 RS-485 PLC 變頻器
前言
在傳統(tǒng)的變頻控制系統(tǒng)中,變頻器的啟動/停止由PLC通過開關量輸出控制,變頻器頻率是由PLC通過模擬量輸出端口輸出0~5(10)V或4~20mA信號控制的,這需要購買PLC比較昂貴的模擬量輸出端口模塊。變頻器出現(xiàn)故障時由PLC讀取變頻器的故障報警觸點,對具體故障原因并不清楚,需操作人員查詢變頻器報警信息后再閱讀變頻器說明書才知道,這在沒有專業(yè)人員的情況下,對于一個普通的值班人員來說有一定的的難度。隨著交流變頻控制系統(tǒng)及通訊技術的發(fā)展,作者想到可以利用PLC及變頻器的串行通訊的方式來實現(xiàn)PLC對變頻器的控制。這樣既節(jié)省了投資,又減少了設計、安裝和維護的工作量。
一、變頻器的選型
DANFOSS VLT系列變頻調(diào)速器對串行通訊技術的支持是世界所公認的。它所支持的串行通訊技術包括標準RS-485 ,及包括PROFIDRIVE 、LONWORKS在內(nèi)的各種現(xiàn)場總線方式。其中,RS-485通訊方式為用戶提供了無需附加任何費用的、最為廉價實用的串行通訊方式。我們只需按照DANFOSS VLT變頻器規(guī)定的通訊數(shù)據(jù)結(jié)構、控制字和狀態(tài)字格式發(fā)送數(shù)據(jù)即可實現(xiàn)與VLT變頻的通訊。VLT為用戶提供了兩種控制字和狀態(tài)字格式標準:即DANFOSS標準的DANFOSS FC協(xié)議和PROFIBUS標準的PROFIDRIVE協(xié)議。其中FC協(xié)議為用戶提供了更多的與VLT有關的控制信息和狀態(tài)信息。在本例中我們選用DANFOSS FC協(xié)議。
二、PLC的選型
西門子工控產(chǎn)品在工控領域應用市場中有較高的占有率,S7-200系列PLC是西門子SIMATIC PLC家族中的成員之一,在西門子工控領域應用中占有重要地位。S7-200系列PLC體積小,軟硬件功能強大,系統(tǒng)配置方便,由它組成的系統(tǒng)可以與許多種的現(xiàn)場總線相連接。它一推向市場就在各行各業(yè)得到了廣泛應用。自由通訊口方式是S7-200 PLC的一個很有特色的功能,它使S7-200 PLC可以由用戶自己定義通訊協(xié)議。利于自由通訊口方式,在本系統(tǒng)中PLC可以與變頻器和方便連接。PLC通過自由通訊口方式與變頻器通訊,控制變頻器的運行,讀取變頻器自身的電壓、電流、功率、頻率和過壓、過流、過負荷等全部報警信息等參數(shù),這比通過外部端口控制變頻器的運行具有較高的可靠性,節(jié)省了PLC寶貴的I/O端口,又獲的了大量變頻器的信息。在本例中,作者將按照DANFOSS FC協(xié)議來對S7-200的自由口進行編程。
三、VLT串行通訊簡介
VLT變頻器的串行通訊為異步半雙工的方式,使用字節(jié)奇偶校驗和塊傳送異或校驗方法。每個變頻器都配備有一個標準的RS-485通訊端口,使協(xié)議可以通過RS-485電氣接口來進行傳輸。PLC為主機,變頻器為從機,系統(tǒng)電碼的傳輸由主機控制,主機不斷發(fā)出某個地址的電碼給從機,等待從機的響應。主機最多能帶31個從機,在有中繼器的情況下,可以增加到126個從機,也就是從機的地址最多可以設定到126。通訊時,每一個字節(jié)從一個起始位開始實行傳送,然后再傳遞8個數(shù)據(jù)位,相應地組成一個字節(jié),每個字節(jié)由一個奇偶校驗位來驗證傳送的正確性,然后由一個終止位結(jié)束。這樣一個字節(jié)共由11個位組成。
四、電碼結(jié)構
每個電碼由一個起始字節(jié)(STX)開始,這個起始字節(jié)為STX=02H。隨后緊跟一個表示電碼長度(LGE)的字節(jié)和表示變頻器地址的字節(jié)(ADR)。然后是一些數(shù)據(jù)字節(jié)(隨電碼類型而變)。整個電碼由一個數(shù)據(jù)控制字節(jié)(BCC)來結(jié)束。結(jié)構如下:
STX LGE ADR PKE IND PWE H PWE L PCD1 PCD2 BCC
02 0E 04 00 00 00 00 00 00 00 00 00 00 00 00 XX
在上述數(shù)據(jù)結(jié)構中:
1、 PKE占用兩個字節(jié),包括參數(shù)命令類型和參數(shù)數(shù)目;
2、 IND為索引,也占用兩個字節(jié),它與參數(shù)數(shù)目一起使用用于讀寫有索引的參數(shù),此參數(shù)即為設置變頻器的參數(shù)。索引字節(jié)用于表明它是一個讀命令還是寫命令。在讀命令中必須具有0400H的格式,在寫命令中必須具有0500H的格式。
3、 PWE為參數(shù)值塊。占用四個字節(jié),分為高字(PWE H)和低字(PWE L)。比如主機要改變當前的變頻器參數(shù),新的參數(shù)就應寫在參數(shù)PWE中發(fā)送給變頻器。
4、 PCD為過程塊,占用4個字節(jié)。它有兩種狀態(tài),當主機發(fā)給從機時,PCD1為控制字,PCD2為參考值;當從機發(fā)給主機時,PCD1為狀態(tài)字,PCD2為當前的輸出頻率。
5、 BCC為數(shù)據(jù)控制字節(jié)。由它來對接收到的命令進行檢驗正確與否。它的初始值為0,然后對該字節(jié)以前的所有字節(jié)進行異或。
五、PLC編程示例
PLC與變頻器之間采用主從方式進行通訊,PLC為主機,變頻器為從機。1個網(wǎng)絡中只有一臺主機,主機通過站號區(qū)分不同的從機。它們采用半雙工雙向通訊,從機只有在收到主機的讀寫命令后才發(fā)送數(shù)據(jù)。 PLC控制軟件編程上采用模塊式結(jié)構,各種功能的程序模塊通過主程序有機地結(jié)合起來,使系統(tǒng)運行穩(wěn)定可靠。
1、PLC在第一次掃描時執(zhí)行初始化子程序,對端口及RCV指令進行初始化。為了增加程序的可靠性,在初始化完成后,如果檢測到端口空閑時則運行RCV指令使端口處于接受狀態(tài)。初始化子程序如下:
Network 1 // 網(wǎng)絡標題 檢測端口空閑可編在主程序中
// 設定端口屬性
LD SM0.0
MOVB 73, SMB30
Network 2
// 接收信息狀態(tài)
LD SM0.0
MOVB 102, SMB87
Network 3
LD SM0.0
MOVB 16#02, SMB88
MOVB 50, SMB92
MOVB 50, SMB94
R SM87.2, 1
Network 4
LD SM0.0
ATCH INT1, 23 //連接口0接收完成的中斷
Network 5
LD SM0.0
ATCH INT0, 9 //連接口0發(fā)送完成的中斷
Network 6
LD SM0.0
ENI //中斷允許
Network 7
LD SM0.0
MOVD &VB250, VD220 //裝入地址指針
MOVB 0, VB242 //BCC碼寄存器清零
MOVD &VB300, VD224 //裝入地址指針
MOVB 0, VB246 //BCC碼寄存器清零
2、當要改變當前變頻狀態(tài)的信息需傳送時,調(diào)用“控制子程序”。首先它要禁止端口的接收,然后對控制電碼進行編輯和BCC檢驗碼計算,并發(fā)送;當沒有改變當前變頻狀態(tài)的信息需傳送時,調(diào)用“空命令”子程序。因為PLC如果要讀取變頻器的當前工作狀態(tài),就要給變頻器發(fā)送命令,而“控制子程序”代碼繁瑣,執(zhí)行效率不高,我們可以將“空命令”程序需傳送的電碼預先編排好(可以用短電碼),在不需要改變變頻器的時候調(diào)用此程序,這樣可以大大提高執(zhí)行效率。“控制子程序”程序代碼如下:
Network 1
LD SM0.0 //停止端口0的接收
R SM87.7, 1
RCV VB300, 0
Network 2
LD L0.0
MOVW 16#047C, VW211
MOVW LW1, VW213
Network 3
LD L0.1
MOVW 16#0434, VW211
MOVW 0, VW213
Network 4
LD SM0.0
MOVW LW1, VW213
Network 5 // 網(wǎng)絡標題
// 網(wǎng)絡注釋
LD SM0.0
MOVB 16#02, VB200
MOVB 16#0E, VB201
MOVB LB3, VB202
MOVD 0, VD203
MOVD 0, VD207
HTA VB200, VB250, 15
Network 6
LD SM0.0 //計算BCC校驗碼
FOR VW240, +1, +15
Network 7
LD SM0.0
XORB *VD220, VB242
Network 8
LD SM0.0
INCD VD220
Network 9
NEXT
Network 10
LD SM0.0
HTA VB242, VB265, 1 //BCC校驗碼寫入發(fā)送緩沖區(qū)
Network 11
LDB= VB251, 16#0E //發(fā)送緩沖區(qū)準備好后進行發(fā)送
S S0.1, 1
Network 12
LSCR S0.1
Network 13
LD SM4.5
XMT VB250, 0
Network 14
SCRE
3、發(fā)送完成后執(zhí)行發(fā)送完成中斷程序,它的操作包括:允許RCV;bcc碼寄存器清零;重新裝入用于計算BCC校驗碼的地址指針;接收緩沖區(qū)中存放指令結(jié)束字符的字節(jié)清零,用來判斷下一條指令格式是否正確。 4、接收完成后執(zhí)行接收完成中斷程序,它會將接收緩沖區(qū)中的十六進制ASCII碼還原成數(shù)據(jù)并保存。然后調(diào)用“接收處理”子程序。它主要是求出接收緩沖區(qū)中指令的BCC校驗碼并與指令中的BCC校驗碼進行比對,并對電碼中的數(shù)據(jù)進行處理。例如:電碼中過程塊的PCD1表示變頻器的狀態(tài),PCD2表示變頻器當前的輸出頻率。
總結(jié):
使用此方法采用西門子PLC通過自由口使用 DANFOSS FC協(xié)議對DANFOSS變頻器進行控制,極大地減少了線路連接的復雜性,避免了現(xiàn)場可能的各種電磁干擾對控制設備的影響。
參考文獻:
1、西門子公司 SIMATIC S7-200系統(tǒng)手冊 2002.10
2 、DANFOSS公司 VLT 2800操作說明
馮敬璞 男 1980年 畢業(yè)于山西工業(yè)職業(yè)技術學院 現(xiàn)從事自動控制方面的工作
河北省邯鄲市和平路388號北院三樓
邯鄲市工業(yè)自動化研究所 056000
電話:0310-3099710
郵箱:hdfjp@163.com
提交
查看更多評論
其他資訊
FANUC機器人教材
機器人控制技術
ifix4.0中文版發(fā)布講座
iFIX視頻培訓-驅(qū)動配置等
iFIX視頻培訓-標簽組和層